<?php
/**
 * This class manages the study branches (in german Studienrichtungen)
 * 
 * @author Dennis Ahaus
 *
 */
class StudyBranchesController extends AppController{

	var $uses = array('StudyBranch');

	/**
	 * (non-PHPdoc)
	 * @see Controller::beforeFilter()
	 */
	function beforeFilter(){
		parent::beforeFilter();
	}

	/**
	 * (non-PHPdoc)
	 * @see AppController::index()
	 */
	function index(){
		$this->data = $this->StudyBranch->find('all');
		if(Empty($this->data)){
			$message = 'Es existieren keine Studienrichtungen.';
			parent::doFlash(array('Info'=>$message));
		}
	}

	/**
	 * Adds a study branch
	 */
	function add(){
		if(!empty($this->data)){
			$name = strtoupper($this->data['StudyBranch']['branch_name']);
			$params = array(
				'conditions' => array(
					'UPPER(branch_name)' => $name
			)
			);

			// check if there is already a study branch with same name
			$result = $this->StudyBranch->find('all',$params);
			if(empty($result)){
				$this->StudyBranch->create();
				$this->StudyBranch->set($this->data);
				$ok = $this->StudyBranch->save($this->data);
				$name = '"'.$this->data['StudyBranch']['branch_name'].'"';
				if($ok){
					$message = 'Die Studienrichtung '.$name.' wurde angelegt.';
					parent::doFlash(array('Info'=>$message));
					$this->redirect(array('controller'=>'studyBranches','action'=>'index'));
				}else{
					$message = 'Die Studienrichtung "'.$name.'" konnte nicht angelegt werden. '.$this->Session->error();
					parent::doFlash(array('Fehler'=>$message));
				}
			} else {
				$message = 'Die Studienrichtung konnte nicht angelegt werden,
				 da eine Studienrichtung mit gleichem Namen bereits vorhanden ist.';
				parent::doFlash(array('Fehler'=>$message));
			}
		}
	}

	/**
	 * Deletes a study branch
	 * @param int $id - id which study branch should be deleted
	 */
	function delete($id=null){
		if(is_numeric($id)){
			// check foreign keys
			$branch = $this->StudyBranch->findById($id);
			$dependencies = array();
			if(!empty($branch['Course'])){
				$deps = 'Kursen ( ';
				$c = array();
				foreach($branch['Course'] as $key => $val){
					$c [] = $val['course_name'];
				}
				$deps .= implode(', ',$c);
				$deps .= ' )';
				$dependencies[] = $deps;
			}
			$tmp = $this->StudyBranch->read('branch_name',$id);#
			$name = $tmp['StudyBranch']['branch_name'];
			if(empty($dependencies)){
				$ok = $this->StudyBranch->delete($id);
				if ($ok) {
					$message = 'Die Studienrichtung "'.$name.'" wurde gelöscht';
					parent::doFlash(array('Info'=>$message));
				}else{
					$message = 'Die Studienrichtung "'.$name.'" konnte nicht gelöscht werden. '.$this->Session->error();
					parent::doFlash(array('Fehler'=>$message));
				}
			}else{
				$message = 'Die Studienrichtung "'.$name.'" konnte nicht gelöscht werden.';
				$message .= ' Es existieren Abhängigkeiten zu: '.implode(',', $dependencies);
				parent::doFlash(array('Fehler'=>$message));
			}
		}
		$this->redirect(array('controller'=>'studyBranches','action'=>'index'));
	}

	/**
	 * Updates a study branches data
	 * @param int $id - id for study branch which should be updated
	 */
	function update($id=null){
		
		// check if there is already same study branch with same name
		if(!empty($this->data) && is_numeric($id)){
			$name = strtoupper($this->data['StudyBranch']['branch_name']);
			$params = array(
				'conditions' => array(
					'UPPER(branch_name)' => $name,
					'id <>' => $id
				)
			);

			$result = $this->StudyBranch->find('all',$params);
			if(empty($result)){
				$this->StudyBranch->id = $id;
				$ok = $this->StudyBranch->save($this->data);
				$name = '"'.$this->data['StudyBranch']['branch_name'].'"';
				if($ok){
					$message = 'Die Studienrichtung '.$name.' wurde gespeichert';
					parent::doFlash(array('Info'=>$message));
					$this->redirect(array('action'=>'index'));
				}else{
					$message = 'Die Änderungen konnten nicht gespeichert werden. '.$this->Session->error();
					parent::doFlash(array('Fehler'=>$message));
				}

			}else{
				$message = 'Die Änderungen konnten nicht gespeichert werden,
					da eine Studienrichtung mit gleichem Namen bereits vorhanden ist. '.$this->Session->error();
				parent::doFlash(array('Fehler'=>$message));
			}
		}

		// get the data to display in form fields
		if(is_numeric($id)){
			$this->data = $this->StudyBranch->findById($id);
		}	

		if(empty($this->data)){
			$message = 'Es existiert keine Studienrichtung mit der ID '.$id;
			parent::doFlash(array('Fehler'=>$message));
		}

	}

}
?>
